﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;

namespace TS2015
{
    public class Candidates
    {
        public int MaMon { get; set; }
        public string TenMon { get; set; }

        [Display(Name = "Mã thí sinh")]
        public string MaTS { get; set; }

        [Display(Name = "Ngày sinh")]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime NgaySinh { get; set; }

        [Display(Name = "Họ đệm")]
        public string HoDem { get; set; }

        [Display(Name = "Dân tộc")]
        public int MaDanToc { get; set; }
        public string TenDanToc { get; set; }

        [Display(Name = "Tên")]
        public string Ten { get; set; }

        [Display(Name = "Họ tên")]
        public string FullName { get; set; }
        [Display(Name = "Số báo danh")]
        public string SBD { get; set; }
        public GioiTinh GioiTinh { get; set; }

        [Display(Name = "Số điện thoại")]
        public string SoDienThoai { get; set; }

        [Display(Name = "Trường THPT")]
        public int IDTruong10 { get; set; }
        public int IDTruong11 { get; set; }
        public int IDTruong12 { get; set; }
        //public string MaTruong10 { get; set; }
        //public string MaTruong11 { get; set; }
        //public string MaTruong12 { get; set; }

        public string TenTruong10 { get; set; }
        public string TenTruong11 { get; set; }
        public string TenTruong12 { get; set; }

        [Display(Name = "Tỉnh - Trường")]
        public string MaTinhTruong10 { get; set; }
        public string MaTinhTruong11 { get; set; }
        public string MaTinhTruong12 { get; set; }

        public string TenTinhTruong10 { get; set; }
        public string TenTinhTruong11 { get; set; }
        public string TenTinhTruong12 { get; set; }

        [Display(Name = "Tỉnh")]
        public string MaTinh { get; set; }

        public string TenTinh { get; set; }

        [Display(Name = "Email")]
        //[DataType(DataType.EmailAddress, ErrorMessage=" ")]
        [EmailAddress(ErrorMessage = " ")]
        public string Email { get; set; }

        public string NamTotNghiep { get; set; }

        [Display(Name = "Huyện")]
        public string MaHuyen { get; set; }

        public string TenHuyen { get; set; }


        [Display(Name = "Trường ĐH")]
        public string MaTruongDH { get; set; }
        //public string MaMaTruong { get; set; }
        public string TenTruongDH { get; set; }

        [Display(Name = "Khối thi")]
        public string TenKhoiThi { get; set; }
        public string MaKhoiThi { get; set; }

        [Display(Name = "Đối tượng ưu tiên")]
        public int MaDoiTuong { get; set; }
        public string TenDoiTuong { get; set; }

        public string CMND { get; set; }

        [Display(Name = "Hệ đào tạo")]
        public string TenHeDaoTao { get; set; }
        public int MaHeDaoTao { get; set; }

        [Display(Name = "Bậc đào tạo")]
        public string TenBacDaoTao { get; set; }
        public int MaBacDaoTao { get; set; }

        public string MaChuyenNganh { get; set; }
        [Display(Name = "Chuyên ngành")]
        public string TenChuyenNganh { get; set; }
        public string MaNganh { get; set; }
        [Display(Name = "Ngành")]
        public string TenNganh { get; set; }

        [Display(Name = "Đăng ký")]
        public HinhThucDK HinhThucDK { get; set; }


        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Ngày đăng ký")]
        public DateTime NgayDangKy { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Ngày đóng tiền")]
        public DateTime? NgayDongTien { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Ngày hoàn thành")]
        public DateTime? NgayHoanThanhDK { get; set; }

        //[Range(0,10)]
        [Display(Name = "Điểm lớp 10")]
        public double? DiemLop10 { get; set; }

        [Display(Name = "Địa chỉ")]
        //[StringLength(50)]
        public string DiaChi { get; set; }
        //[Range(0, 10)]
        [Display(Name = "Điểm lớp 11")]
        public double? DiemLop11 { get; set; }


        [Display(Name = "Điểm TBTHPT")]
        public double? DiemTBTHPT { get; set; }

        //[Range(0, 10)]
        [Display(Name = "Điểm lớp 12")]
        public double? DiemLop12 { get; set; }

        public int? TinhTrangTotNghiep { get; set; }

        [Display(Name = "Điểm TBTN")]
        public double? DiemTBTN { get; set; }

        [Display(Name = "Đóng tiền")]
        public bool TrangThaiDongTien { get; set; }

    } 
    public class ResultHighSchool
    {
        public int IDTruong { get; set; }

        public string MaTruong { get; set; }

        public string TenTruong { get; set; }

        public string DiaChi { get; set; }

        public string MaTinh { get; set; }
        public string TenTinh { get; set; }

        public string MaKhuVuc { get; set; }
        public string TenKhuVuc { get; set; }
        
    }
    public class BacDaoTao
    {
        public int MaBacDT { get; set; }

        public string TenBacDT { get; set; }        
    }
    
    public enum KhoaTaiKhoan
    {
        [Display(Name = "Hoạt động")]
        Mo = 0,
        [Display(Name = "Khóa")]
        Khoa = 1
    }
    public enum HeDaoTaoKhac
    {
        [Display(Name = "Chọn Hệ đào tạo...")]
        Chon = 0,
        [Display(Name = "Cao đẳng nghề")]
        HN = 1,
        [Display(Name = "Trung cấp Chính quy")]
        HL = 2
    };
    public enum NoiDaoTao
    {
        [Display(Name = "Chọn nơi đào tạo...")]
        Chon = 0,
        [Display(Name = "Hà Nội")]
        HN = 1,
        [Display(Name = "Trung cấp Kinh tế Kỹ thuật Hồng Lam")]
        HL = 2
    };
    public enum NhomDoiTuong
    {
        [Display(Name = "Nhóm 1")]
        Nhom1,
        [Display(Name = "Nhóm 2")]
        Nhom2
    };
    public enum HinhThucDK
    {
        [Display(Name = "Đăng ký hồ sơ thi tuyển")]
        Thi,
        [Display(Name = "Đăng ký hồ sơ xét tuyển kết quả thi TN THPT")]
        XetDP,
        [Display(Name = "Đăng ký hồ sơ xét tuyển kết quả thi TN THPT do các trường ĐH tổ chức")]
        XetDH
    };
    public enum GioiTinh
    { 
        [Display(Name = "Nam")]
        Nam,
        [Display(Name = "Nữ")]
        Nữ
    };

    public enum TrangThai
    {
        [Display(Name = "Sử dụng")]
        SuDung, 
        [Display(Name = "Không sử dụng")]
        KhongSuDung
    }
    
    public class DuLieuChung
    {
        public static string NonUnicode(string text)
        {
            string[] arr1 = new string[] { "á", "à", "ả", "ã", "ạ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ",  
                "đ",  
                "é","è","ẻ","ẽ","ẹ","ê","ế","ề","ể","ễ","ệ",  
                "í","ì","ỉ","ĩ","ị",  
                "ó","ò","ỏ","õ","ọ","ô","ố","ồ","ổ","ỗ","ộ","ơ","ớ","ờ","ở","ỡ","ợ",  
                "ú","ù","ủ","ũ","ụ","ư","ứ","ừ","ử","ữ","ự",  
                "ý","ỳ","ỷ","ỹ","ỵ",};
            string[] arr2 = new string[] { "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",  
                "d",  
                "e","e","e","e","e","e","e","e","e","e","e",  
                "i","i","i","i","i",  
                "o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o","o",  
                "u","u","u","u","u","u","u","u","u","u","u",  
                "y","y","y","y","y",};
            for (int i = 0; i < arr1.Length; i++)
            {
                text = text.Replace(arr1[i], arr2[i]);
                text = text.Replace(arr1[i].ToUpper(), arr2[i].ToUpper());
            }

                return Regex.Replace(text.ToLower().Replace(@"'", String.Empty), @"[^\w]+", "-").Replace("\"", "-").Replace(":", "-");
        }

        public static string MaHoaMD5(string str)
        {
            Byte[] dauvao = ASCIIEncoding.Default.GetBytes(str);
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                var daura = md5.ComputeHash(dauvao);
                return BitConverter.ToString(daura).Replace("-", "").ToLower();
            }
        }
    }
}